﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IMES.Entity
{
    /// <summary>
    /// 实体基类
    /// </summary>
    //[SugarIndex("index_{table}_id", nameof(Id), OrderByType.Asc, IsUnique = true)]
    //[SugarIndex("index_{table}_createdate", nameof(CreateTime), OrderByType.Asc)]
    //[SugarIndex("index_{table}_sort", nameof(SortNum), OrderByType.Asc)]
    //[SugarIndex("index_{table}_del", nameof(IsDeleted), OrderByType.Asc)]
    //[SugarIndex("index_{table}_orgid", nameof(CreateOrgId), OrderByType.Asc)]
    public class BaseEntity
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public BaseEntity()
        {
            Id = SnowFlakeSingle.Instance.NextId();
            //CreateTime = DateTime.Now;
            //IsDeleted = true;
        }
        /// <summary>
        /// id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "主键")]
        public long Id { get; set; }
        ///// <summary>
        ///// 创建人id
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true, ColumnDescription = "创建人id")]
        //public string? CreateUserId { get; set; }
        ///// <summary>
        ///// 创建人姓名
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true, ColumnDescription = "创建人姓名")]
        //public string? CreateUser { get; set; }
        ///// <summary>
        ///// 创建时间
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = false, ColumnDescription = "创建时间")]
        //public DateTime CreateTime { get; set; }
        ///// <summary>
        ///// 修改人id
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true, ColumnDescription = "修改人id")]
        //public string? ModifyUserId { get; set; }
        ///// <summary>
        ///// 修改人姓名
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true, ColumnDescription = "修改人姓名")]
        //public string? ModifyUser { get; set; }
        ///// <summary>
        ///// 修改时间
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true, ColumnDescription = "修改时间")]
        //public DateTime? ModifyTime { get; set; }
        ///// <summary>
        ///// 创建组织机构ID
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true, ColumnDescription = "创建组织机构ID")]
        //public string? CreateOrgId { get; set; }
        ///// <summary>
        ///// 创建组织机构名称
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true, ColumnDescription = "创建组织机构名称")]
        //public string? CreateOrgName { get; set; }
        ///// <summary>
        ///// 排序
        ///// </summary>
        //[SugarColumn(IsNullable = false, ColumnDescription = "排序")]
        //public int SortNum { get; set; }
        /// <summary>
        /// 是否删除
        /// </summary>
        [SugarColumn(ColumnDescription = "是否删除")]
        public bool IsDeleted { get; set; }
        ///// <summary>
        ///// 删除原因
        ///// </summary>
        //[SugarColumn(ColumnDescription = "删除原因", IsNullable = true)]
        //public string? DeleteReason { get; set; }
        ///// <summary>
        ///// 删除时间
        ///// </summary>
        //[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true, ColumnDescription = "删除时间")]
        //public DateTime? DeleteTime { get; set; }
        ///// <summary>
        ///// 删除人
        ///// </summary>
        //[SugarColumn(ColumnDescription = "删除人", IsNullable = true)]
        //public string? DeleteUser { get; set; }
        ///// <summary>
        ///// 删除单位
        ///// </summary>
        //[SugarColumn(ColumnDescription = "删除单位", IsNullable = true)]
        //public string? DeleteOrg { get; set; }
        ///// <summary>
        ///// 多租户ID
        ///// </summary>
        //[SugarColumn(ColumnDescription = "多租户ID", DefaultValue = "0")]
        //public long TenantId { get; set; } = 0;
    }
}
